home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / ForCLI / flp_by_anp.lha / FLP_BY_ANP / Delay.doc < prev    next >
Text File  |  1996-02-24  |  6KB  |  137 lines

  1.  
  2. *****************************************************************************
  3. * Project Details                                                           *
  4. * ---------------                                                           *
  5. * Project Name:    Delay                                                    *
  6. * Project Version: 1                                                        *
  7. * Copyright:       Anthony N Peck                                           *
  8. * Date:            Sunday 21st May 1995                                     *
  9. *                                                                           *
  10. * Contact:                                                                  *
  11. * 68 Woralul St                                                             *
  12. * Waramanga ACT 2611                                                        *
  13. * Australia                                                                 *
  14. *                                                                           *
  15. * E-Mail: Anthony.Peck@Radford.act.edu.au                                   *
  16. *                                                                           *
  17. *****************************************************************************
  18. * Summary                                                                   *
  19. * -------                                                                   *
  20. *                                                                           *
  21. * Usage: Delay <secs>                                                       *
  22. *                                                                           *
  23. * This little program simply goes away and waits the specified time.  Like  *
  24. * WAIT but a lot simpler!  Used in script files, it will enhance your love  *
  25. * life and rid your house of pests.  The program, the source and in fact    *
  26. * my warmest regards are all yours FOC.                                     *
  27. *                                                                           *
  28. *****************************************************************************
  29.  
  30. ; Some Quick equivalents...
  31.  
  32. ExecBase                = $04      ; Exec Base...ahem
  33. LF                      = $0A      ; ASCII character (Line Feed) 
  34. SZMess                  = $3C      ; Size of error message
  35. _LVOOpenlibrary         = -$0228   ; Exec function opens libraries
  36. _LVOCloselibrary        = -$019E   ; Exec function closes libraries
  37. _LVODelay               = -$C6     ; Dos function causes a delay
  38. _LVOWrite               = -$30     ; Dos function
  39. _LVOOutput              = -$3C     ; Dos function
  40.  
  41. ; A couple of Macros...
  42.  
  43. EXEC            Macro
  44.         MOVE.L  ExecBase,A6        ; Move Exec into a6
  45.         JSR     _LVO\1(A6)         ; Add Library offset and call function
  46.                 Endm
  47.  
  48. CALLDOS         Macro
  49.         MOVE.L  _DosBase,A6        ; Move Dos into a6
  50.         JSR     _LVO\1(A6)         ; Add Library offset and call function
  51.                 Endm
  52.  
  53. Start:
  54.  
  55. ; The program starts here.  The number of supplied parameters is
  56. ; found in D0 and the actual parameters are in a list at a location
  57. ; found in A0.
  58.  
  59.         SUBQ.B  #$01,D0            ; Subtract the first parameter
  60.         MOVE.L  D0,D5              ; Move the number remaining to D5
  61.         MOVE.L  A0,A5              ; Move the parameter address to A5
  62.  
  63. OpenDos:
  64.  
  65.         LEA     Dosname,A1         ; Load the dos library
  66.         MOVE.L  #$00,D0            ; Any version will do
  67.         EXEC    Openlibrary        ; Macro opens library
  68.         BEQ     Exit               ; If there's a problem, close down
  69.         MOVE.L  D0,_DosBase        ; Save the return address
  70.  
  71. TestParam:
  72.  
  73. ; We test the parameter passed and convert it from Ascii to Hex
  74.  
  75.         TST.B   D5                 ; Test if we have any parameters
  76.         BEQ     Error              ; If not then go write the message
  77.  
  78.         CLR.L   D1                 ; Clear D1
  79.         CLR.L   D0                 ; Clear D0
  80.  
  81. 1$      CLR.L   D0                 ; Clear D0
  82.         MOVE.B  (A5)+,D0           ; Move the first parameter to D0
  83.         CMP.B   #LF,D0             ; Is it a LineFeed?
  84.         BEQ     GoTime             ; Yep, so finished and outta here ->
  85.         SUB.B   #$30,D0            ; Subtract "0"
  86.         CMP.B   #$0A,D0            ; Compare with the value "10"
  87.         BCC     GoTime             ; Greater than zero, must be a char
  88.         MULU    #$0A,D1            ; Multiply the previous entry by "10"
  89.         ADD     D0,D1              ; Add current number to D1
  90.         BRA     1$                 ; And back for more digital fun...
  91.  
  92. GoTime:
  93.  
  94.         TST.B   D1                 ; Test if we have a number!
  95.         BEQ     Error              ; Nope...I'm outta here ->
  96.         MULU    #$32,D1            ; Multiply number by ticks (50/sec)
  97.         CALLDOS Delay              ; Call the Delay function
  98.  
  99. Close:        
  100.  
  101.         MOVE.L   _DosBase,A1       ; Move dos base into a1
  102.         EXEC     Closelibrary      ; Macro closes dos
  103.  
  104. Exit:
  105.  
  106.         CLR.L    D0                ; Clear D0
  107.         RTS                        ; Return To System
  108.  
  109. Error:
  110.  
  111.         CALLDOS Output             ; Call the output function
  112.         BEQ     Close              ; No can do so outta here ->
  113.         MOVE.L  D0,D1              ; else shift output handle to D1
  114.         MOVE.L  #Message,D2        ; This is the message...
  115.         MOVE.L  #SZMess,D3         ; ...plus the length of the message...
  116.         CALLDOS Write              ; ..and write it  
  117.         BRA     Close              ; I'm gone ->
  118.  
  119. _DosBase:  
  120.  
  121.         DC.L    $1                 ; Memory for Dos Base
  122. Dosname:
  123.  
  124.         DC.B    "dos.library",$00  ; dos library name
  125.  
  126. Message:
  127.  
  128.         DC.B    LF,"    "          ;
  129.         DC.B    "Usage: Delay"     ;
  130.         DC.B    " <secs> "         ; Text of message
  131.         DC.B    "A N Peck - 1995"  ;
  132.         DC.B    LF,LF              ;
  133.  
  134.         END
  135.  
  136.  
  137.